﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataLayer;
using System.Collections;
using DataLayer.Class;

namespace WinProgProject2
{
    public partial class KullaniciIslemleri : Form
    {
        ErrorLogService.Service1Client sv = new ErrorLogService.Service1Client();
        bool yeniKayit = false;
        enum YETKI  {Admin = 0, Normal = 1};
        

        public KullaniciIslemleri()
        {
            InitializeComponent();
        }

        private void ekleToolStripButton_Click(object sender, EventArgs e)
        {
            yeniKayit = true;
            lvKullanicilar.SelectedItems.Clear();
            gbxInput.Enabled = true;
            txtKKodu.Enabled = true;
            chkGoster.Checked = false;

            foreach (Control c in gbxInput.Controls)
            {
                if (c is TextBox || c is ComboBox)
                    c.Text = null;
            }

        }

        private void KullaniciIslemleri_Load(object sender, EventArgs e)
        {
            filtreStripComboBox.SelectedIndex = 0;
            gbxInput.Enabled = false;
            try
            {
                lvDoldur("", -1);
            }
            catch (Exception ex)
            {
                MessageBox.Show(null,ex.Message + "("+ex.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 6, "Kulllanıcı İşlemleri");
            }

        }
        private void lvDoldur(string aranan, int kriter)
        {    
            
            lvKullanicilar.Items.Clear();
            
            ArrayList kullanicilar = KullaniciDB.TumKullanicilariCek(aranan, kriter);
            int i = 0, j=0;
            foreach (Kullanici k in kullanicilar)
            {
                ListViewItem lvItem = new ListViewItem(k.KullaniciNo.ToString());
                lvItem.SubItems.Add(k.Ad);
                lvItem.SubItems.Add(k.Soyad);
                lvItem.SubItems.Add(k.EklenmeTarihi.ToShortDateString());

                lvItem.Tag = k;

                //grup belirleme
                if (k.Yetki == (int)YETKI.Admin)
                {
                    if (i % 2 == 1)
                        lvItem.BackColor = Color.LightSalmon;
                    i++;
                }
                else
                {
                    if (j % 2 == 1)
                        lvItem.BackColor = Color.LightSalmon;
                    j++;
                }
                    lvItem.Group = lvKullanicilar.Groups[k.Yetki];

                lvKullanicilar.Items.Add(lvItem);

                
            }

        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            
            try
            {
                     if (txtKPass1.Text != txtKPass2.Text)
                        throw new Exception("Girilen şifreler uyuşmuyor.");

                     if (cmbYetki.SelectedIndex < 0)
                         throw new Exception("Yetki seçiniz.");

                     if (txtKAdi.Text == string.Empty || txtKSoyad.Text == string.Empty)
                         throw new Exception("Ad ve soyad alanlarını doldurunuz.");
                
                if (yeniKayit)
                {

                    Kullanici yeniKullanici = new Kullanici(Convert.ToInt32(txtKKodu.Text), txtKAdi.Text, txtKSoyad.Text, txtKPass1.Text, cmbYetki.SelectedIndex);
                    yeniKullanici.ekle();
                    basaDon();
                }
                else
                {
                    string yeniSifre = (lvKullanicilar.SelectedItems[0].Tag as Kullanici).Sifre;
                    
                    if (txtKPass1.Text != string.Empty || txtKPass2.Text != string.Empty)
                        yeniSifre = txtKPass1.Text;

                    Kullanici kullanici = new Kullanici(Convert.ToInt32(txtKKodu.Text), txtKAdi.Text, txtKSoyad.Text, yeniSifre, cmbYetki.SelectedIndex);
                    kullanici.guncelle();

                
                }
                lvDoldur("",-1);
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(null,ex.Message + "("+ex.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                if(yeniKayit)
                    sv.errorEkle(Session.kullaniciKodu, ex.Message, 1, "Kulllanıcı İşlemleri");
                else
                    sv.errorEkle(Session.kullaniciKodu, ex.Message, 2, "Kulllanıcı İşlemleri");
            }
        }

        private void chkGoster_CheckedChanged(object sender, EventArgs e)
        {
            if (chkGoster.Checked)
            {
                txtKPass1.PasswordChar = (char)0;
                txtKPass2.PasswordChar = (char)0;
            }
            else
            {
                txtKPass1.PasswordChar = '*';
                txtKPass2.PasswordChar = '*';
            }
        }

        private void btnTemizle_Click(object sender, EventArgs e)
        {
            basaDon();
        }

        private void txtKullaniciArama_Click(object sender, EventArgs e)
        {
            txtKullaniciArama.Text = "";
            txtKullaniciArama.ForeColor = Color.Coral;

        }

        private void txtKullaniciArama_TextChanged(object sender, EventArgs e)
        {
            lvDoldur(txtKullaniciArama.Text, filtreStripComboBox.SelectedIndex);
        }

        private void lvKullanicilar_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvKullanicilar.SelectedItems.Count > 0)
            {
                Kullanici seciliKullanici = lvKullanicilar.SelectedItems[0].Tag as Kullanici;

                txtKKodu.Text = seciliKullanici.KullaniciNo.ToString();
                txtKAdi.Text = seciliKullanici.Ad;
                txtKSoyad.Text = seciliKullanici.Soyad;
                cmbYetki.SelectedIndex = seciliKullanici.Yetki;

            }
            else
                basaDon();
        }

        private void guncelleToolStripButton_Click(object sender, EventArgs e)
        {
            yeniKayit = false;
            gbxInput.Enabled = true;
            txtKKodu.Enabled = false;

        }

        private void silToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult result = MessageBox.Show(null,txtKKodu.Text+" numaralı kullanıcıyı silmek istediğinizden emin misiniz?", "Onay",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                    (lvKullanicilar.SelectedItems[0].Tag as Kullanici).sil();
                
                MessageBox.Show(null,"Kullanıcı silindi.","Bilgi",MessageBoxButtons.OK,MessageBoxIcon.Information);
                
                lvDoldur("",-1);
            }
            catch (Exception ex)
            {
                MessageBox.Show(null,ex.Message + "("+ex.InnerException+")","Hata",MessageBoxButtons.OK,MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 3, "Kulllanıcı İşlemleri");
            }
        }
        private void basaDon()
        {
            ekleToolStripButton_Click(null,null);
            gbxInput.Enabled = false;
        }
    }
}
